package com.springcloud3.config;

import com.springcloud3.biz.SheepBizHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.function.*;

/**
GET /user/1 获取1号用户
GET /users 获取所用用户
POST /user 请求体携带JSON,增减1个用户
PUT /user/1  请求体携带JSON,修改1号用户
DELETE /user/1 获取1号用户
* */
@Configuration
public class WebFunctionConfig {
    /**
     * 一.给容器放个 bean,类型   RouterFunction<ServerResponse>
     * 二.每个业务准备自己的Handler
     *
     *     核心四大对象
     * 1.RouterFunction :定义路由信息,发什么请求,谁来处理
     * 2.requestPredicate 请求方式 (GET POST)清酒参数
     * 3.ServerRequest 请求
     * 4.ServerResponse  相应
      */
    @Bean
    public RouterFunction<ServerResponse> userRoute(SheepBizHandler sheepBizHandler){
   return        RouterFunctions.route()//开始定义路径
                .GET("/user/{id}", RequestPredicates.accept(MediaType.ALL),  sheepBizHandler::getSheep)
        .GET("/users",sheepBizHandler::getSheeps)
                .POST ("/user",RequestPredicates.accept(MediaType.APPLICATION_JSON),sheepBizHandler::saveSheep)
           .PUT ("/user/{id}", RequestPredicates.accept(MediaType.APPLICATION_JSON),  sheepBizHandler::updateSheep)
                .DELETE("/user/{id}",sheepBizHandler::deleteSheep)
           .build();

    }
}
